void assign_option(const char *vecname, arglist_t *ap, const char *val);
void disp_vec_options(const char *vecname, arglist_t *ap);
void disp_vecs(void);
+void disp_vec( const char *vecname );
void exit_vecs(void);
void disp_formats(int version);
const char * name_option(long type);
}
}
+void
+disp_filter_vec( const char *vecname )
+{
+ fl_vecs_t *vec;
+ arglist_t *ap;
+
+ for (vec = filter_vec_list; vec->vec; vec++) {
+ if ( case_ignore_strcmp( vec->name, vecname )) {
+ continue;
+ }
+ printf(" %-20.20s %-50.50s\n",
+ vec->name, vec->desc);
+ for (ap = vec->vec->args; ap && ap->argstring; ap++) {
+ if ( !(ap->argtype & ARGTYPE_HIDDEN ))
+ printf(" %-18.18s %-.50s %s\n",
+ ap->argstring, ap->helpstring,
+ (ap->argtype&ARGTYPE_REQUIRED)?"(required)":"");
+ }
+ }
+}
+
static signed int
alpha (const void *a, const void *b)
{
filter_vecs_t * find_filter_vec(char * const, char **);
void free_filter_vec(filter_vecs_t *);
void disp_filters(int version);
+void disp_filter( const char *vecname );
void disp_filter_vecs(void);
void exit_filter_vecs(void);
#define MYNAME "main"
static void
-usage(const char *pname, int shorter)
+usage(const char *pname, int shorter )
{
printf("GPSBabel Version %s. http://www.gpsbabel.org\n\n",
gpsbabel_version );
}
}
-
+static void
+spec_usage( const char *vec ) {
+ printf( "\n" );
+ disp_vec( vec );
+ disp_filter_vec ( vec );
+ printf( "\n" );
+}
int
main(int argc, char *argv[])
}
if (argv[argn][1] == '?' || argv[argn][1] == 'h') {
- usage(argv[0],0);
+ if ( argn < argc-1 ) {
+ spec_usage( argv[argn+1] );
+ }
+ else {
+ usage(argv[0],0);
+ }
exit(0);
}
return svp;
}
+#define VEC_FMT " %-20.20s %-.50s\n"
void
disp_vecs(void)
int i = 0;
svp = sort_and_unify_vecs(&vc);
-#define VEC_FMT " %-20.20s %-.50s\n"
for (i=0;i<vc;i++) {
if ( svp[i]->vec->type == ff_type_internal ) {
continue;
return;
}
+void
+disp_vec( const char *vecname )
+{
+ vecs_t **svp;
+ arglist_t *ap;
+ int vc;
+ int i = 0;
+
+ svp = sort_and_unify_vecs(&vc);
+ for (i=0;i<vc;i++) {
+ if ( case_ignore_strcmp( svp[i]->name, vecname )) {
+ continue;
+ }
+ printf(VEC_FMT, svp[i]->name, svp[i]->desc);
+ for (ap = svp[i]->vec->args; ap && ap->argstring; ap++) {
+ if ( !(ap->argtype & ARGTYPE_HIDDEN))
+ printf(" %-18.18s %s%-.50s %s\n",
+ ap->argstring,
+ (ap->argtype & ARGTYPE_TYPEMASK) ==
+ ARGTYPE_BOOL ? "(0/1) " : "",
+ ap->helpstring,
+ (ap->argtype & ARGTYPE_REQUIRED)?"(required)":"");
+ }
+ }
+ xfree (svp);
+ return;
+}
+
/*
* Additional information for V1.
* Output format type at front of line.